package com.klangner.go.model;

/**
 * Contains information about game state
 * @author klangner
 *
 */
public interface IGameState {

	/**
	 * @return board info
	 */
	public IBoard getBoard();
	
	/**
	 * Check if given move is legal according to game rules
	 * @return true if legal
	 */
	public boolean isLegalMove(Move move);
	
	/**
	 * @return game status
	 */
	public GameStatus	getStatus();	
	
	/**
	 * @return color which should be played now
	 */
	public int getTurnColor();
	
	/**
	 * Make copy of this object
	 */
	public IGameState makeCopy();
	
	/**
	 * Make move and change game state
	 */
	public void makeMove(Move move);
	
}
